package dominio.modelo;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="USUARIO")
public class Usuario {

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	@Column(name="LOGIN")
	private String login;

	@Column(name="SENHA")
	private String senha;

	@Column(name="EMAIL")
	private String email;

	@Column(name="NOME")
	private String nome;

	@Column(name="SOBRENOME")
	private String sobrenome;

	@ManyToMany
	@Cascade(value={CascadeType.DELETE_ORPHAN, CascadeType.ALL})
	private List<Filme> listFilme;

	@OneToMany
	@JoinColumn(name="IDUSUARIO")
	@Cascade(value={CascadeType.DELETE_ORPHAN, CascadeType.ALL})
	private List<Comentario> listComentario;
	
	public Usuario() {
		listFilme = new ArrayList<Filme>();
		listComentario = new ArrayList<Comentario>();
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSobrenome() {
		return sobrenome;
	}

	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	
	public void addToFilme(Filme filme) {
		this.listFilme.add(filme);
	}
	
	public void removeToFilme(Filme filme) {
		this.listFilme.remove(filme);
	}
	
	public void addToComentario(Comentario comentario) {
		this.listComentario.add(comentario);
	}
	
	public void removeToComentario(Comentario comentario) {
		this.listComentario.remove(comentario);
	}

}
